BERT (Bidirectional Encoder Representations from Transformers) 是 Google 在 2018 年提出的語言模型,它的誕生是 NLP 領域的一個里程碑。BERT 的強大之處在於,它徹底改變了我們訓練和使用語言模型的方式。
BERT簡介
BERT是基於Transformer的Encoder架構。他具有雙向上下文理解的優勢。這是它與傳統模型最大的不同。相較於只從左到右閱讀的單向模型,BERT在處理一個詞時,能同時考慮到它左邊和右邊的所有上下文資訊。而為了實現雙向理解,BERT在預訓練階段採用了兩個獨特的任務:Masked Language Model (MLM) 和 Next Sentence Prediction (NSP)。
Masked Language Model (MLM)
MLM是BERT的核心訓練任務,它就像一個「填空遊戲」,讓模型能從雙向語境中學習。它的運作方式為:
模型會隨機將輸入句子中約 15% 的詞語遮蔽(mask)。而模型的任務是根據被遮蔽詞語前後的上下文,來準確預測這些詞語是什麼。
舉例:
輸入: "The cat sat on the [MASK]."
模型會根據前面的 "The cat sat on" 和後面的 "." 來判斷,最有可能被遮蔽的詞是 "mat"。
MLM透過強迫模型同時學習左側與右側的語境資訊,從而獲得了深層的雙向語義理解能力。
Case 2:
A: "I went to the store."
B: "The sky is blue." → 模型判斷為 假
而很明顯,在case 2中,AB兩句為完全不同的事情,顯而易見的是flase的結果。
第一階段:Pre-training(預訓練)
在這一階段的目的是:在海量的無標註語料(如維基百科、書籍)上進行訓練。而他是怎麼訓練的呢?
透過同時執行MLM和NSP任務,模型獲得了豐富的通用語言表示,能夠理解詞彙、語法和常識。
第二階段:Fine-tuning(微調)
而透過運訓練有了初步完整體系的模型,第二步便是將預訓練好的模型通用知識,應用到一個特定的、有標註數據的下游任務上。透過在BERT模型的頂部加上一個簡單的輸出層(例如分類器),並用少量任務相關的數據進行訓練。這個過程非常高效,計算成本也低。
文本分類 (Text Classification)
情感分析、垃圾郵件檢測、主題分類。
應用:將句首的特殊符號 [CLS] 所輸出的向量,視為整個句子的語義表示,然後接一個分類器來進行分類。
命名實體識別 (NER)
在文本中識別出人名、地名、組織名等實體。
應用:BERT 對每一個輸入詞(Token)都會產生一個輸出向量,將這些向量分別送入分類器,來判斷該詞的實體類型。
問答系統 (Question Answering, QA)
根據一篇給定的文章和一個問題,找出答案片段。
應用:BERT 會將問題和文章串接起來,然後預測答案在文章中的起始位置和結束位置。
句子配對 (Sentence Pair Tasks)
判斷兩句話是否語意相似或邏輯相關。
應用:將兩句話用 [SEP] 分隔,輸入 BERT 模型,並利用 [CLS] 輸出來進行分類。